package com.jinke.api.common.retry;

import com.github.rholder.retry.Attempt;
import com.github.rholder.retry.RetryListener;
import lombok.extern.slf4j.Slf4j;

/**
 * @projectName:
 * @title: RetryLogListener
 * @description:
 * @see:
 * @author: hhp
 * @version: 1.0.0
 * @createTime: 2024/8/7 14:50
 */
@Slf4j
public class RetryLogListener implements RetryListener {

    @Override
    public <V> void onRetry(Attempt<V> attempt) {
        // 第几次重试,(注意:第一次重试其实是第一次调用)
        log.info("第{}-1次重试, 距离第{}-1次重试的延迟:[{}], 重试是否异常终止:[{}], 重试是否正常返回:[{}]",
                attempt.getAttemptNumber(), attempt.getAttemptNumber(), attempt.getDelaySinceFirstAttempt(),
                attempt.hasException(), attempt.hasResult());
        // 是什么原因导致异常
        if (attempt.hasException()) {
            log.info("异常原因,causeBy={}" , attempt.getExceptionCause().toString());
        }
    }
}
